﻿using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Collections.Generic;


namespace MoviTiendas.Logica
{
    public class MoviTienda
    {
        // ------------------------------------------------------------------------------------
        // Atributos
        // ------------------------------------------------------------------------------------

        /**
         * Lista de barrios de la aplicación
         */
        public List<Barrio> barrios { get; set; }

        /**
         * Cliente de la aplicación
         */
        public Cliente cliente { get; set; }

        /**
         * Singleton de la clase MoviTienda
         */
        private static MoviTienda instancia;

        // ------------------------------------------------------------------------------------
        // Constructor
        // ------------------------------------------------------------------------------------

        /**
         * Constructor de la clase
         */
       private MoviTienda() 
       {
           barrios = new List<Barrio>();
       }

       // ------------------------------------------------------------------------------------
       // Métodos
       // ------------------------------------------------------------------------------------

       /**
        * Retorna una instancia única de la clase MoviTienda
        */
       public static MoviTienda darInstancia
       {
          get 
          {
             if (instancia == null)
             {
                 instancia = new MoviTienda();
                // Comunicacion.Comunicacion.CargarBarrios();
             }
             return instancia;
          }
       }

      /**
       * Crea al cliente de la aplicación, de acuerdo con los parámetros que recibe.
       * @nombre - Nombre del cliente
       * @direccion - Dirección del cliente
       * @barrio - Barrio del cliente
       */
       public void crearCliente(String nombre, String direccion, Barrio barrio)
       {
           cliente = new Cliente(nombre, direccion, barrio);
       }

     /**
      * Edita al cliente de la aplicación, de acuerdo con los parámetros que recibe.
      * @nombre - Nuevo nombre del cliente
      * @direccion - Nueva dirección del cliente
      */
       public void editarCliente(String nombre, String direccion)
       {
           cliente.nombre = nombre;
           cliente.direccion = direccion;
       }

       public Barrio darBarrio(String nombre)
       {
           Barrio respuesta = null;
           bool encontro = false;
           for (int i = 0; i < barrios.Count && !encontro; i++)
           {
               if (nombre.Equals(barrios[i].nombre))
               {
                   encontro = true;
                   respuesta = barrios[i];
               }

           }
           return respuesta;
       }

       public void agregarItemACarrito(Item item)
       {
           cliente.agregarItemACarrito(item);
       }
    }
}
